java 对象的转型

对象的向上转型

向上转型—将子类的对象复制给父类的应用;

比如:
Student s = new Student();
Person p = s;
前提:Student必须是Person的子类。
一个引用能够调用哪些成员(变量和函数),取决于这个引用的类型
一个引用调用的是哪一个方法,取决与这个引用所指向的对象。
上述代码中p是一个person类型,但其指向的是一个student类型的对象,其调用的实际是student类的成员函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package test2;

class Person{
String name;
int age;
//String address;
void introduce(){
System.out.println("我的名字是"+name+",我的年龄是"+age);
}
}

class Student extends Person{
String address;
void study(){
System.out.println("wo zai xue xi");
}
void introduce(){ //复写方法
super.introduce();
//System.out.println("我的名字是"+name+",我的年龄是"+age);
System.out.println("我的家在"+address);

}
}

public class _myjava2 {
public static void main(String[] args) {
Student s= new Student();
Person p = s;
//Person p = new Student(); //和以上两句有同样的效果
p.name = "zhangsan";
p.age = 20;
//p.address = "beijing";//报错
p.introduce();
//p.study();//报错

}
}

对象的向下转型

向下转型—将父类的对象赋值给子类的引用;

Student s1 = new Student();
Person p = s1;
Student s2 = (Student)p;